Integrating Online Search Results and Social Networks

ABSTRACT

A method includes receiving a search query from a client system associated with a first user, and obtaining one or more candidate identifiers associated with the first user. The method also includes identifying a social network set of search results matching the search query and social network criteria for the first user. The social network criteria is satisfied for a respective search result when the respective search result is authored or annotated by one or more author identifiers, and at least one author identifier of the one or more author identifiers is associated with at least one candidate identifier of the one or more candidate identifiers associated with the first user. The method also includes providing to the client system a list of search results including at least a subset of the social network set of search results.

RELATED APPLICATIONS

This application claims priority to U.S. application Ser. No.13/406,364, filed Feb. 27, 2012, which claims priority to U.S.Provisional Application Ser. No. 61/447,660, filed Feb. 28, 2011, eachof which is hereby incorporated herein by reference in its entirety.

This application is related to U.S. patent application Ser. No.13/361,922, filed Jan. 30, 2012, which claims priority to U.S.Provisional Patent Application Ser. No. 61/437,540, filed Jan. 28, 2011.Both of these applications are incorporated herein by reference in theirentireties.

BACKGROUND

The disclosed embodiments relate generally to providing search resultsin response to a search query, and particular to systems, methods anduser interfaces in which such search results include one or resultsauthored or annotated by an entity associated with an identifier that iseither known to an identifier of the user who submitted the search queryor that has been identified as a candidate identifier of the user inaccordance with predefined criteria or a predefined selection process.For example, the authoring or annotating entity may be associated withthe user via one or more social networking services.

Computer networks play a significant role in our lives, as more peoplegain access to the computer networks (e.g., the Internet) and people usethe computer networks for more activities. Increasingly, more people usemore than one account (e.g., email addresses, account names, or otheridentifiers) in accessing resources on the computer networks.Frequently, a user may not use a same account name for various serviceson the computer networks, for example in using social networkingservices.

However, existing methods are not efficient at managing informationposted by a same person using multiple accounts. Therefore, there is aneed for a new method and system for identifying and managing multipleuser accounts.

SUMMARY

A number of embodiments (e.g., of server systems, client systems ordevices, and methods of operating such systems or devices) are presentedbelow. These embodiments provide methods, systems, and graphical userinterfaces (GUIs) for identifying candidate identifiers for a user.

As described in more detail below, some embodiments involve acomputer-implemented method performed at a server system having one ormore processors and memory storing one or more programs for execution bythe one or more processors. The method performed at the server systemincludes identifying a set of candidate identifiers for a first user.The method also includes, for each respective online service of aplurality of online services: retrieving, from one or more serversassociated with the respective online service, information correspondingto a plurality of the candidate identifiers in the set of candidateidentifiers; comparing the information retrieved for each respectivecandidate identifier of the plurality of candidate identifiers withinformation corresponding to the first user to produce a match resultfor each respective candidate identifier; and conditionally, inaccordance with the match results for the plurality of candidateidentifiers, identifying a best matching candidate identifier for thefirst user. The method furthermore includes providing the best matchingcandidate identifiers for the first user, corresponding to at least asubset of the plurality of online services, for use in a subsequentprocess.

In accordance with some embodiments, a method is performed at a serversystem having one or more processors and memory storing one or moreprograms for execution by the one or more processors. The methodincludes receiving a search query from a client system associated with afirst user, and obtaining one or more candidate identifiers associatedwith the first user. The method also includes identifying a socialnetwork set of search results matching the search query and socialnetwork criteria for the first user. The social network criteria issatisfied for a respective search result when the respective searchresult is authored or annotated by one or more entities having authoridentifiers, and at least one author identifier of the one or moreauthor identifiers is associated with at least one candidate identifierof the one or more candidate identifiers associated with the first user.The method furthermore includes providing to the client system a list ofsearch results including at least a subset of the social network set ofsearch results.

In accordance with some embodiments, a system comprises one or moreprocessors for executing programs and memory storing one or moreprograms for execution by the one or more processors. The one or moreprograms include instructions executed by the one or more processors soas to perform any of the aforementioned methods.

In accordance with some embodiments, a computer readable storage mediumstores one or more programs configured for execution by a computer. Theone or more programs include instructions for performing any of theaforementioned methods.

In accordance with some embodiments, a graphical user interface isdisplayed at a computer system having one or more processors and memorystoring one or more programs for execution by the one or moreprocessors. The graphical user interface includes: a list of searchresults, including respective search results annotated by respectivesecondary users who are associated with one or more respective candidateidentifiers of a user of the computer system; and one or moreconfirmation affordances. A respective confirmation affordance is forconfirming that the user of the computer system is an owner of acorresponding candidate identifier, and the respective confirmationaffordance includes a user interface object for confirmation. Inresponse to receiving a user input activating the user interface objectfor confirmation, a confirmation message is concurrently displayed withat least a subset of the list of search results.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the aforementioned embodiments, referenceshould be made to the Description of Embodiments below, in conjunctionwith the following drawings in which like reference numerals refer tocorresponding parts throughout the figures.

FIG. 1 is a block diagram illustrating an example of a distributedcomputer system, in accordance with some embodiments.

FIG. 2 is a block diagram illustrating an identifier system, inaccordance with some embodiments.

FIG. 3 is a block diagram illustrating a client, in accordance with someembodiments.

FIG. 4A is a block diagram illustrating examples of user information,contacts, and candidate identifiers, in accordance with someembodiments.

FIG. 4B is a block diagram illustrating examples of external accountsinformation, in accordance with some embodiments.

FIGS. 5A-5D illustrate examples of user interfaces displayed at aclient, in accordance with some embodiments.

FIGS. 6A-6B are flowcharts representing a method of identifying bestmatching candidate identifiers, in accordance with some embodiments.

FIG. 7 is a flowchart representing a method of identifying a socialnetwork set of search results, in accordance with some embodiments.

FIG. 8 is a block diagram illustrating a search engine system, inaccordance with some embodiments.

Like reference numerals refer to corresponding parts throughout thedrawings.

DESCRIPTION OF EMBODIMENTS

Methods and systems for identifying best matching candidate identifiersin social networking services are described. Reference will be made tocertain embodiments, which are illustrated in the accompanying drawings.

Moreover, in the following description, numerous specific details areset forth to provide a thorough understanding. However, it will beapparent to one of ordinary skill in the art that various embodimentsmay be practiced without these particular details. In other instances,methods, procedures, components, and networks that are well-known tothose of ordinary skill in the art are not described in detail to avoidobscuring other aspects of the described embodiments.

It will also be understood that, although the terms first, second, etc.may be used herein to describe various elements, these elements shouldnot be limited by these terms. These terms are only used to distinguishone element from another. For example, a first contact could be termed asecond contact, and, similarly, a second contact could be termed a firstcontact. The first contact and the second contact are both contacts, butthey are not the same contact.

The terminology used in the description of the embodiments herein is forthe purpose of describing particular embodiments only and is notintended to be limiting of the claims. As used in the description hereinand the appended claims, the singular forms “a,” “an,” and “the” areintended to include the plural forms as well, unless the context clearlyindicates otherwise. It will also be understood that the term “and/or”as used herein refers to and encompasses any and all possiblecombinations of one or more of the associated listed items. It will befurther understood that the terms “comprises” and/or “comprising,” whenused in this specification, specify the presence of stated features,integers, steps, operations, elements, and/or components, but do notpreclude the presence or addition of one or more other features,integers, steps, operations, elements, components, and/or groupsthereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined [that a stated condition precedent is true]” or “if [a statedcondition precedent is true]” or “when [a stated condition precedent istrue]” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

As used herein, the term “URL” refers to a uniform resource locator,which is sometimes called a uniform resource identifier (URI).

As used herein, the term “identifier” refers to a word or set of wordsthat is used to identify a user on one or more social networkingservices. For example, an identifier of a first user may be a real name(e.g., a first, last, or full name, with or without a middle name ormiddle initial), account name, username, or nickname of the first user.Generally, the identifier is selected by human, and thus, as usedherein, the term “identifier” does not refer to an identifier that isoriginally generated by a machine (e.g., an index number assigned, to auser or information related to the user, by an automated machine fordata access purposes).

FIG. 1 is a block diagram illustrating an example of distributedcomputer system 100, according to certain embodiments. In FIG. 1, thesystem 100 includes one or more client computers 102, communicationsnetwork 106, and identifier system 108. Various embodiments ofidentifier system 108 implement the methods described in this document.

FIG. 1 also illustrates one or more social networking service servers104 and at least one search engine 110 coupled with communicationsnetwork 106. Social networking service servers 104 are servers thatprovide social networking services. For example, social networkingservice servers 104 provide services for sharing information (e.g.,short messages, postings, web logs, comments, etc.) among socialnetworking service users. Search engine 110 provides search results inresponse to search queries (e.g., a list of online documents and/orinformation that correspond to a respective search query).

Client computers 102 can be any of a number of computing devices (e.g.,Internet kiosk, personal digital assistant, cell phone, gaming device,desktop computer, laptop computer, tablet computer, handheld computer,or combinations thereof) used to enable the activities described below.Client computer(s) 102 is also referred to herein as client(s) or clientsystem(s). Client 102 typically includes graphical user interface (GUI)111. Client 102 is described in greater detail below with reference toFIG. 3. Client 102 is connected to identifier system 108 viacommunications network 106. As described in more detail below, GUI 111is used to display web documents. Identifier system 108 providesinformation to a server (e.g., search engine 110 and/or socialnetworking service server 104) or client 102.

Identifier system 108 includes one or more servers, such as server 112,connected to the communications network 106. Optionally, the one or moreservers are connected to the communications network 106 via a front endserver 122. In some embodiments, front end server 122 conveys (andoptionally parses) inbound requests to the appropriate server ofidentifier system 108, and formats responses and/or other informationbeing sent to other servers or clients in response to requests. Frontend server 122, if present, may be a web server providing web basedaccess to identifier system 108. Front end server 122, if present, mayalso route communications to and from other destinations, such as aremote search engine.

Identifier system 108 typically includes a user information database 116and a candidate identifier database 118. In some embodiments, identifiersystem 108 also includes or has access to one or more other databases,such as a web cache database (not shown), which maintains copies of webpages (e.g., web pages for social networking services). In someembodiments, server 112 includes candidate identifier module 114 andapplications 128. Server 112 communicates with one or more databasesinternal to identifier system 108, such as user information database 116and candidate identifier database 118 using a local area network, byinternal communication busses, or by any other appropriate mechanism orcombination of mechanism.

Server 112 is also referred to herein as a server system. Server 112communicates with other servers (e.g., social networking serviceserver(s) 104 and search engine(s) 110) and/or clients 102 via front endserver 122 (if present) and communication network(s) 106. In someembodiments, communications network 106 is the Internet. In otherembodiments, communication network 106 can be any local area network(LAN), wide area network (WAN), metropolitan area network, or acombination of such networks. In some embodiments, server 112 is usedwithin an intranet, and thus it may be called an intranet server.

Applications 128 include application programs used for managingidentifier system 108. In some embodiments, applications 128 include auser information processing module (not shown), where the userinformation processing module assists in accessing and updating userinformation database 116. User information database 116 stores variousinformation associated with the users of identifier system 108,including users' real names, geography, etc. In some embodiments, userinformation database 116 also includes information about contacts, suchas names, email addresses, and phone numbers of the contacts (e.g., 226,FIG. 2). In some embodiments, contacts may be stored in a separatecontacts database (not shown).

Candidate identifier module 114 identifies candidate identifiers, andprocesses information related to the candidate identifiers to identifyone or more best matching candidate identifiers. Candidate identifiermodule 114 typically stores data for operation of the candidateidentifier module 114 in candidate identifier database 118. In someembodiments, candidate identifier database 118 includes a list ofcandidate identifiers and information about respective candidateidentifiers, such as identifiers of friends or connections associatedwith the respective candidate identifiers.

In essence, server 112 is configured to manage certain aspects ofidentifier system 108, including handling requests for candidateidentifiers from a respective server (e.g., social networking serviceserver 104 or search engine 110) and/or respective client 102.

Optionally, identifier system 108 is implemented as part of searchengine 110 or as part of social networking service server 104.

In some embodiments, fewer and/or additional modules, functions ordatabases are included in identifier system 108 and server 112. Themodules shown in identifier system 108 and server 112 representfunctions performed in certain embodiments.

FIG. 2 is a block diagram illustrating identifier system 108 inaccordance with some embodiments. Identifier system 108 is typicallyimplemented using a server system having one or one or more servers.More particularly, identifier system 108 typically includes one or moreprocessing units (CPUs) 202, one or more network or other communicationsinterfaces 204, memory 206, and one or more communication buses 208 forinterconnecting these components. In some embodiments, communicationbuses 208 include circuitry (sometimes called a chipset) thatinterconnects and controls communications between system components. Insome other embodiments, identifier system 108 includes a user interface(not shown) (e.g., a user interface having a display device, a keyboard,and a mouse or other pointing device), but more typically identifiersystem 108 is controlled from and accessed by various client systems.

Memory 206 of identifier system 108 includes high-speed random accessmemory, such as DRAM, SRAM, DDR RAM or other random access solid statememory devices; and may include non-volatile memory, such as one or moremagnetic disk storage devices, optical disk storage devices, flashmemory devices, or other non-volatile solid state storage devices.Memory 206 may optionally include one or more storage devices remotelylocated from CPU(s) 202. Memory 206, or alternately the non-volatilememory device(s) within memory 206, comprises a non-transitory computerreadable storage medium for storing information. In some embodiments,memory 206 or the computer readable storage medium of memory 206 storesthe following programs, modules and data structures, or a subsetthereof:

-   -   Operating System 210 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   Network Communication Module (or instructions) 212 that is used        for connecting identifier system 108 to other computers (e.g.,        search engine 110, social networking service servers 104, and        clients 102) via one or more communications interfaces 204 and        one or more communications networks 106 (FIG. 1), such as the        Internet, other wide area networks, local area networks,        metropolitan area networks, and so on;    -   Identifier Engine 214 that receives information requests from        and provides responses to other computers (e.g., search engine        110, social networking service servers 104, and clients 102);        and    -   (Optional) Search Engine 110 that performs a search operation in        response to a search query from client 102.

In some embodiments, search engine 110 is implemented using a separateset of servers (see FIG. 8). In other embodiments, search engine 110 isimplemented as part of identifier system 108 and includes:

-   -   search database 228, including search index 230 (for mapping        query terms to documents, and optionally locations within        documents), and documents or content database 232 (storing the        content indexed by search index 230);    -   search query handler 234 (sometimes implemented by a front end        server of a search engine system), for processing search queries        received from users at client systems and responding to such        search queries (see method 700, and operations 626-630 of        process 600); and    -   optionally, user information cache 236 (search engine user        information cache) that stores portions of user information        116-C, optionally contact data 226-C, and candidate identifiers        118-C, for identifying social network sets of search results        while processing respective search queries.

In some embodiments, identifier engine 214 includes the followingprograms, modules and data structures, or a subset or superset thereof:

-   -   one or more server modules 216, corresponding to server 112 in        FIG. 1, for managing certain aspects of identifier system 108;    -   User information database 116 that stores records of users; and    -   Candidate identifier database 118 that stores candidate        identifiers and/or information associated with candidate        identifiers (e.g., full name, geography, etc.).

In some embodiments, user information database 116 includes contact data226. Contact data 226 includes contacts (e.g., address books) of aplurality of users. Contact data 226 is described in more detail belowwith reference to FIG. 4A.

In some embodiments, server module 216 includes applications 128.Applications 128 include candidate identifier module 114 for performingthe primary functions of an identifier system. Applications 128 mayoptionally include other applications 224.

Candidate identifier module 114 includes candidate identifiergenerator/identifier program 218, social networking service interfaceprogram(s) 220, and optionally, search engine interface program(s) 222.

The candidate identifier generator/identifier program 218 generates oridentifies candidate identifiers for a user. In some embodiments,candidate identifier generator/identifier program 218 stores thecandidate identifiers in, and/or retrieves the candidate identifiersfrom, candidate identifier database 118.

Social networking service interface program(s) 220 assist sending tosocial networking service servers (e.g., 104, FIG. 1) requests forinformation corresponding to candidate identifiers, and receivinginformation from the social networking service servers.

Optional search engine interface program(s) 222 assist receivingrequests for candidate identifiers from one or more search engines(e.g., 110, FIG. 1), and sending candidate identifiers to the one ormore search engines.

In some embodiments, social networking service interface program(s) 220include security protocols to retrieve information that are available tothe user (i.e., information that the user has authority to access). Insome embodiments, search engine interface program(s) 222 includesecurity protocols to provide information only in response toauthenticated requests (e.g., from an authorized search engine).

Each of the above identified modules and applications corresponds to aset of instructions for performing one or more functions describedabove. These modules (i.e., sets of instructions) need not beimplemented as separate software programs, procedures or modules, andthus various subsets of these modules may be combined or otherwisere-arranged in various embodiments. In some embodiments, memory 206 maystore a subset of the modules and data structures identified above.Furthermore, memory 206 may store additional modules and data structuresnot described above.

Notwithstanding the discrete blocks in FIGS. 1 and 2, these figures areintended to be a functional description of some embodiments rather thana structural description of functional elements in the embodiments. Oneof ordinary skill in the art will recognize that an actualimplementation might have the functional elements grouped or split amongvarious components. In practice, and as recognized by those of ordinaryskill in the art, items shown separately could be combined and someitems could be separated. For example, in some embodiments, userinformation database 116 is part of or stored within server 112. Inother embodiments, user information database 116 is implemented usingone or more servers whose primary function is to store and process userinformation. In some embodiments, user information database 116 includescandidate identifier database 118, or vice versa.

The number of servers used to implement identifier system 108 and howfeatures are allocated among them will vary from one implementation toanother, and may depend in part on the amount of data traffic that thesystem must handle during peak usage periods as well as during averageusage periods, and may also depend on the amount of data stored byidentifier system 108. Moreover, one or more of the blocks (e.g., server112, user information database 116, etc.) in FIG. 1 or FIG. 2 may beimplemented on one or more servers designed to provide the describedfunctionality. Although the description herein refers to a particulardistribution of features between identifier system 108 and client 102(and optionally search engine system 110), the embodiments are notlimited to such distinctions. For example, features described herein asbeing part of server 112 can be implemented in whole or in part inclient 102, and vice versa.

FIG. 3 is a block diagram illustrating client 102, also called a clientsystem or client device, in accordance with some embodiments. Client 102is configured for use by a subscriber (also herein called “the user”) ofone or more social network systems. Client 102 includes user interface300, which typically includes display device 301, and one or more inputdevices 303 such as a keyboard and a mouse or other pointing device. Asnoted above, client 102 includes graphical user interface (GUI) 111,which is displayed on display device 301. Client 102 typically includesone or more processing units (CPUs) 302, one or more network or othernetwork communications interfaces 304, memory 306, and one or morecommunication buses 308 for interconnecting these components.Communication buses 308 may include circuitry (sometimes called achipset) that interconnects and controls communications between systemcomponents.

Memory 306 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 306 may optionallyinclude one or more storage devices remotely located from CPU(s) 302.Memory 306, or alternately the non-volatile memory device(s) withinmemory 306, comprises a non-transitory computer readable storage mediumfor storing information. In some embodiments, memory 306 or the computerreadable storage medium of memory 306 stores the following programs,modules and data structures, or a subset thereof:

-   -   Operating System 310 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   Network Communication Module (or instructions) 312 that is used        for connecting client 102 to other computers (e.g., identifier        system 108, search engine 110, social networking service server        104, and/or other clients 102) via one or more communications        Network Interfaces 304 (wired or wireless) and one or more        communication networks 106 (FIG. 1), such as the Internet, other        wide area networks, local area networks, metropolitan area        networks, and so on;    -   Web Browser Application 314, which processes and initiates        display of a web document (e.g., 320) in GUI 111; and    -   Document Data 318, which includes web documents (e.g., 320,        etc.).

In some embodiments, web browser application 314 or an extension,plug-in or toolbar of web browser application 314 includes identifiermodule 316 that sends requests for identification information fromidentifier system 108 (FIG. 1) and receives identifiers.

Respective web document 320 is typically a webpage (or XML document orthe like) that can be displayed by client 102. In some circumstances,document 320 is a webpage received from identifier system 108.Respective web document 320 includes information for display in GUI 111.In some embodiments, respective web document 320 includes embeddedinstructions for receiving document-related input from a computer user(e.g., a request search results) and for formatting web document 320 fordisplay in GUI 111. In other circumstances, document 320 is a webpage,received from a search engine, that lists search results responsive to aquery submitted by a user of client 102 to the search engine.

Optionally, memory 306 includes additional other applications orcomponents.

FIG. 4A is a block diagram illustrating examples of user information426, contacts 428, and candidate identifiers 420, in accordance withsome embodiments.

User information 426 is typically stored in user information database116 (FIG. 2). User information 426 includes name 430 of a user (e.g., areal name), and optionally, additional information. The additionalinformation may include one or more of: identifier 432 (e.g., an accountname or an email address), geography 434 (e.g., city and state, or cityand country, of the user's residence), and external accounts information435, which is described below with respect to FIG. 4B. User information426 typically includes contacts pointer 436 to contacts 428 thatcorrespond to the user (e.g., a pointer to an address book datastructure, containing contact or address book information of the user).In some embodiments, contacts are also stored in user informationdatabase 116 (e.g., contact data 226). In other embodiments, contactsare stored in a contacts database that is distinct from user informationdatabase 116.

Contacts 428 include contact entries, for example entry 1 (402-1)through entry x (402-x), where x represents the number of entries incontacts 428 of the user. A respective contact entry (e.g., entry 402-x)includes a field for storing a real name of respective contact 404-x,and optionally one or more of: email address(es) 406-x, otheridentifiers 408-x (e.g., account names other than email addresses406-x), URL(s) 410-x of personal web page(s) (e.g., blogs), and affinityvalue 412-x for the respective contact.

In some embodiments, contacts 428 include entries that correspond tousers that the user has added to the user's contacts (e.g., an addressbook of the user). In some embodiments, contacts 428 include entriesthat are generated automatically without human intervention. Forexample, in some embodiments the automatically generated entriescorrespond to users who have communicated with the respective user, andsatisfy predefined criteria (e.g., frequency of communication).

Affinity value 412-x represents an importance and/or frequency ofcommunication with the respective contact. Affinity value 412-x may beset by the user (e.g., by adding the respective contact to a particulargroup, such as “family,” or by manually indicating that the respectivecontact is important). In some embodiments, affinity value 412-x isdetermined by a computer system without human intervention based on, forexample, the frequency of communication between the user and therespective contact.

Candidate identifiers 420 include a list of candidate identifiers (e.g.,422-1 through 422-p). In some embodiments, the list of candidateidentifiers is identified by candidate identifier generator/identifierprogram 218 of server 112 (FIG. 2). Respective candidate identifier 422is a real name of a user, a username, or any other user identificationinformation that may identify the user. Typically, respective candidateidentifier 422 is a variation of the user's real name, or any otheridentifier that the user has used (e.g., an email address).

In some embodiments, respective candidate identifier 422 has associatedpointer 438 that references respective set of identifier information440. Typically, identifier information 440 is information publiclyavailable about the respective candidate identifier. For example,identifier information 440 may include geography of a person who ownsthe respective candidate identifier (e.g., 444). In addition or instead,secondary information 440 may include secondary identifiers 424.Respective secondary identifier 424 is owned by a person who isassociated with the owner of the respective candidate identifier. Forexample, secondary identifier 424-y may be a username for a friend orconnection of the user who owns respective candidate identifier 422-1.In some implementations, identifier information 440 includes the realname of user 442 (e.g., because the candidate identifier is often not areal name of the user who owns particular candidate identifier 422.

In some embodiments, some respective candidate identifiers 422 havepointer 438 that includes a null value (i.e., the pointer is a nullpointer that does not reference identifier information 440). The nullpointer may be used when there is no identifier information forrespective candidate identifier 422 (e.g., there is no user with a username matching respective candidate identifier 422 on a respective onlineservice).

FIG. 4B is a block diagram illustrating an example of external accountsinformation 435, in accordance with some embodiments. External accountsinformation 435 includes one or more external account identifiers 448associated with identifier 432 (FIG. 4A). In other words, externalaccount identifiers 448 identify other accounts (i.e., accounts otherthan the account corresponding to identifier 432, FIG. 4A) owned or usedby the user of identifier 432 (FIG. 4A). Each external accountidentifier 448 typically includes an identifier (e.g., a username oraccount name used by another service provider, such as a third-partymail service provider, blog service provider, or messaging serviceprovider). In some embodiments, a respective external account identifier(e.g., 448-1) is stored with one or more privacy settings 450 (e.g.,450-1). In some embodiments, the one or more privacy settings (e.g.,450-1) indicate whether the corresponding external account identifier(e.g., 448-1) is to be publicly associated with (e.g., displayed with)identifier 432 (FIG. 4A). For example, if enabled by privacy settings450, a respective external account identifier may be displayed on apublic profile of the user associated with identifier 432. In anotherexample, when enabled by privacy settings 450, content authored by orannotated by the user when using identifier 448-1 is shared with usershaving a social network connection to the user associated withidentifier 432. To protect the privacy of the user, one or more ofprivacy settings 450 may be set by default to prevent such informationfrom being publically displayed or otherwise publicly associated withthe user unless the user takes a positive action (e.g., selects a userinterface object) to modify one or more of the privacy settings 450. Forexample, the user may perform actions to modify privacy settings 450 sothat one or more of external account identifiers 448 are publicallyassociated with the user, who is publically known to be associated withidentifier 432.

FIGS. 5A-5D illustrate an example of user interfaces displayed at aclient, in accordance with some embodiments.

FIG. 5A illustrates an example of user interface 500-A displayed in GUI111 of client 102. User interface 500-A includes a search result pagereceived when a user of client 102 submits a search query, “bbq” in thisexample. For ease of reference, the user of client 102 who submitted thesearch query is sometimes called the first user, as distinguished fromother users who annotated or recommended search results shown to thefirst user. The search result page optionally indicates a useridentifier, such as email address 506, “george.washington@usa.gov,”associated with the first user (who submitted the search query and towhom the search result page was sent).

The search result page includes a search query “bbq,” and a list ofsearch results. More generally, the search query has one or more queryterms, sometimes called keywords. The list of search results includessearch results (e.g., 502-1 through 502-4) that correspond to the one ormore query terms of the search query.

As illustrated in FIG. 5A, search result 502-2 includes annotation 504.Annotation 504 includes information that a particular user (e.g., ThomasJefferson) shared a search result in the list with a user of arespective candidate identifier (e.g., gwashington on Twitter).Annotation 504 also includes the respective candidate identifier and aconfirmation affordance for confirming that the first user (whosubmitted the search query) is the owner of the respective candidateidentifier (e.g., “are you gwashington on Twitter?”). In someembodiments, the respective candidate identifier is identified inaccordance with method 600 described with respect to FIGS. 6A and 6B. Insome embodiments, the particular user (whose annotation 504 is displayedor noted) is a secondary user associated with the respective candidateidentifier as determined in accordance with method 600. The identifierof the particular user is sometimes herein called a “candidate socialcontact identifier,” indicating that the particular user is not yetknown to be a social contact of the first user.

FIG. 5B illustrates an example of user interface 502-B displayed inresponse to the first user's confirmation that the first user is theowner of the respective candidate identifier (e.g., “gwashington” onTwitter). As explained below, information about the respective candidateidentifier and/or other users associated with the respective candidateidentifier (e.g., friends, connections, etc.) is used to modify contentpresented to the first user (e.g., by modifying what content ispresented, the order in which content is presented, and/or modifyingwhich annotations or other supplemental information is presented alongwith other (primary) content that is being presented). User interface500-B includes a modified list of search results. User interface 500-Boptionally includes user identifier 506 (e.g., the email address,george.washington@usa.gov) of the first user, who submitted the searchquery.

Similar to the list of search results shown in FIG. 5A, the modifiedlist of search results includes search results (e.g., 502-1 through502-4) that correspond to the search query submitted by the first user.However, in some embodiments, the modified list includes additionalinformation not included in the list shown in FIG. 5A. In FIG. 5B, someof search results 502 each include an annotation that a particular user(e.g., Thomas Jefferson) shared a respective search result with thefirst user (e.g., with the user identified as “gwashington” on Twitter).For example, search result 502-4 includes an annotation that ThomasJefferson shared search result 502-4 recently (e.g., 5 minutes ago).

FIG. 5B also illustrates that the relative positions of the searchresults in the modified list are adjusted from their original positions(e.g., the positions without adjustments, as shown in FIG. 5A). Forexample, search result 502-4, which Thomas Jefferson shared recently, ispositioned at the top of (i.e., as the first item in) the modified listinstead of being presented as the fourth item in the search result, asshown in FIG. 5A. In this example, search result 502-3, which no friendor connection of the user has shared, is positioned at the bottom of themodified list.

FIG. 5C illustrates another example of user interface 500-C displayed inGUI 111 of client 102. User interface 500-C includes a search resultpage that optionally indicates a user identifier, such as an emailaddress, of the user who submitted the search request that correspondsto the search result page). The search result page includes a searchquery “bbq,” and a list of search results. The list of search resultsincludes search results (e.g., 502-5 and 502-6) that correspond to thesearch query. In some embodiments, every search result shown in the listof search results corresponds to a document that matches the searchquery, in accordance with predefine criteria.

Search result 502-5 includes an annotation. The annotation includesinformation that a particular user (e.g., Thomas Jefferson) shared asearch result in the list. The annotation also includes confirmationaffordance 508 for confirming that the first user (who submitted thesearch query and received the list of search results) is the owner ofthe respective candidate identifier (e.g., 510) (e.g., “are yougwashington?”). In some implementations, including the one shown in FIG.5C, confirmation affordance 508 is located adjacent to the correspondingsearch result (e.g., 502-5). Confirmation affordance 508 includesrespective candidate identifier 510 and, in some embodiments, image 512associated with the respective candidate identifier (e.g., a photo ofthe owner of the respective candidate identifier). Confirmationaffordance 508 typically includes user interface objects for the user toeither confirm (e.g., “yes” 514) or deny (e.g., “no” 516) that he or sheis the owner of the respective candidate identifier (e.g., 510).

As illustrated in FIG. 5C, in some circumstances, the list of searchresults includes a plurality of search results that are marked (orshared) by the same identified person (e.g., Thomas Jefferson sharedsearch results 502-5 and 502-6), who is associated with a candidateidentifier. In some embodiments, only one confirmation affordance isdisplayed for any one candidate identifier. In some implementations, theconfirmation affordance for the candidate identifier is displayed with abest ranking search result among the plurality of search results that ismarked (or shared) by any identified person associated with thecandidate identifier. Furthermore, in some implementations theconfirmation affordance is not displayed for any search result shared orannotated by a person who is already associated with a known identifier(e.g., any external account identifier) of the first user.

Alternatively, in some embodiments, only one confirmation affordance isdisplayed for any one candidate social contact identifier, even when thesame person, having the candidate social contact identifier, hasannotated, authored or shared more than one item in the displayed listof search results. In some embodiments, the confirmation affordance forthe candidate social contact identifier is displayed with a best rankingsearch result among the plurality of search results that is marked (orshared) by the person having the candidate social contact identifier.Alternatively, the confirmation affordance may be displayed with each oftwo or more of the plurality of search results marked or shared by theperson having the candidate social contact identifier.

FIG. 5D illustrates an example of user interface 502-D displayed inresponse to the user's confirmation that the user is the owner of therespective candidate identifier (e.g., “gwashington”). In someembodiments, the respective candidate identifier is identified inaccordance with method 600 described with respect to FIGS. 6A and 6B.User interface 502-D continues to include the list of search results(e.g., 502-5 and 502-6) that correspond to the search query. Searchresult 502-5 includes confirmation message 520, which indicates that therespective candidate identifier (e.g., “gwashington”) has been added tothe user's account as an associated account identifier (e.g., therespective candidate identifier is stored in external accountinformation 435 as a respective external account identifier 448, FIG.4B). In some implementations, confirmation message 520 is locatedadjacent to the corresponding search result (e.g., 502-5). Also, asshown, confirmation message 520 is concurrently displayed with at leasta subset of the list of search results.

In some embodiments, confirmation message 520 includes an “undo” userinterface object 522, which when activated by user input initiatesremoving the respective candidate identifier from the user's account(e.g., the respective candidate identifier is removed from externalaccount information 435, FIG. 4B).

In some embodiments, confirmation message 520 also includes “changeaccount” user interface object 524, which when activated by user inputinitiates modifying the respective candidate identifier in the user'sexternal account information 435. For example, the respective candidateidentifier stored in external account information 435 is replaced with adifferent identifier provided by the first user. In some embodiments, auser interface that is configured to receive an alternative identifierfrom the user may be displayed in response to the user activating“change account” user interface object 524.

In some embodiments, confirmation message 520 includes “add to publicprofile” user interface object 526, which when activated by user inputinitiates adding the respective candidate identifier to a public profileof the user. In some implementations, adding the respective candidateidentifier to the public profile includes modifying one or more privacysettings 450 (FIG. 4B) corresponding to the respective candidateidentifier (now stored as a respective external account identifier 448for the user) so that the public profile of the user (or a web pagedisplaying the public profile of the user) includes the respectivecandidate identifier.

In accordance with some embodiments, a graphical user interface isdisplayed at a computer system having one or more processors and memorystoring one or more programs for execution by the one or moreprocessors. The graphical user interface (e.g., 500-C, FIG. 5C)includes: a list of search results (e.g., 502-5 and 502-6), includingrespective search results annotated by respective secondary users whoare associated with one or more respective candidate identifiers of auser of the computer system (e.g., search results 502-5 and 502-6 areannotated by a secondary user, such as Thomas Jefferson, who isassociated with one of candidate identifiers for the user, such asgwashington); and one or more confirmation affordances (e.g., 508). Arespective confirmation affordance is for confirming that the user ofthe computer system is an owner of a corresponding candidate identifier,and the respective confirmation affordance includes a user interfaceobject (e.g., user interface object 514) for selection (and thusactivation) by the first user so as to make the confirmation. Inresponse to receiving a user input activating the user interface objectfor confirmation, a confirmation message is displayed concurrently withat least a subset of the list of the search results (e.g., see searchresults 502-5 and 502-6, and confirmation message 520, FIG. 5D).

In some embodiments, the one or more confirmation affordances include,for a respective secondary user, only one confirmation affordance. Forexample, as illustrated in FIG. 5C, when the list of search resultsinclude two or more search results (e.g., 502-5 and 502-6) that areannotated by a same user (e.g., Thomas Jefferson), confirmationaffordance 508 is displayed only once.

In some embodiments, the one or more confirmation affordances include,for a respective candidate identifier, only one confirmation affordance.For example, when multiple authors who have annotated the displayedsearch results are associated with a same candidate identifier (e.g.,gwashington), a confirmation affordance (e.g., 508) is displayed onlyonce for that candidate identifier.

In some embodiments, the one or more displayed confirmation affordancesinclude only one confirmation affordance (e.g., only one confirmationaffordance is displayed in any one user interface that presents searchresults). In some embodiments, the one displayed confirmation affordanceincludes a candidate identifier that has a highest likelihood of beingowned by the user, in accordance with predefined criteria. In someembodiments, the one displayed confirmation affordance corresponds to asearch result that is most relevant to the search query and/or the user.

In some embodiments, at least one of the one or more confirmationaffordances is replaced with a confirmation message in the graphicaluser interface. In some embodiments, at least one of the one or moreconfirmation affordances is replaced with the confirmation message inthe graphical user interface in response to receiving the user inputactivating a user interface object for confirmation. For example,confirmation affordance 508 (FIG. 5C) is replaced with confirmationmessage 520 (FIG. 5D) in response to receiving the user input activatingthe user interface object for confirmation 514 (FIG. 5C).

In some embodiments, all of the one or more confirmation affordances arereplaced with the confirmation message. In other words, in theseembodiments no confirmation affordances remain on display when theconfirmation message is displayed.

In some embodiments, the confirmation message includes an undo userinterface object (e.g., “undo” user interface object 522, FIG. 5D), andin response to receiving a user input activating the undo user interfaceobject, a request to dissociate the respective candidate identifier withthe user is sent to a server (e.g., a request to remove the respectivecandidate identifier from external accounts information 435, FIG. 4B, issent to the server).

In some embodiments, the confirmation message includes a user interfaceobject for updating account information (e.g., user interface object524, FIG. 5D), and in response to receiving a user input activating theuser interface object for updating account information, a request for auser interface that is configured for updating account information issent to a server. For example, the client system may receive and displaya web page for updating account information of the first user inresponse to sending the request.

In some embodiments, the confirmation message includes a user interfaceobject for updating a public profile of the user (e.g., user interfaceobject 526, FIG. 5D), and in response to receiving a user inputactivating the user interface object for updating the public profile ofthe user, a request to update the public profile of the user is sent toa server (e.g., a request to update privacy settings 450, FIG. 4B,corresponding to the respective candidate identifier is sent to theserver).

FIGS. 6A-6B are flowcharts representing method 600 of identifying bestmatching candidate identifiers, in accordance with some embodiments. Themethod is performed at a server system having one or more processors andmemory storing one or more programs for execution by the one or moreprocessors (e.g., identifier system 108).

The server system identifies (602) a set of candidate identifiers for afirst user. In some embodiments, the set of candidate identifiers aregenerated in accordance with predefined set of rules. In someembodiments, the set of candidate identifiers includes variations of afull name, email address, and/or other usernames or identifiers of thefirst user. For example, when the first user has a full name of “GeorgeAdam Washington,” the following table shows examples of candidateidentifiers.

Rule Example (first name + last name) georgewashington (first name +middle name + last name) georgeadamwashington (first name + middleinitial + last name) georgeawashington (last name + first name)washingtongeorge (last name + middle name + first name)washingtonadamgeorge (last name + middle initial + first name)washingtonageorge (first name initial + last name) gwashington (lastname + first name initial) washingtong (first name + last name initial)georgew (last name initial + first name) wgeorge (first name initial +middle initial + last name) gawashington (last name + middle initial +first name initial) washingtonag (first name + middle initial + lastname initial) georgeaw (last name initial + middle initial + first name)wageorge

In some embodiments, the set of candidate identifiers includes parts ofthe user's names (e.g., first name, middle name, last name, or initials)separated by a separator (e.g., a period, dash, underscore, or any otherpredefined character). For example, the set may include“george.a.washington” and/or “g.a.washington”.

For each respective online service of a plurality of online services(e.g., social networking services) (604), the server system retrieves(606), from one or more servers associated with the respective onlineservice (e.g., social networking service server 104, FIG. 1),information corresponding to a plurality of the candidate identifiers inthe set of candidate identifiers. In some embodiments, the server systemrequests information corresponding to at least a subset of the candidateidentifiers from each respective online service, and receivesinformation, if any, from the respective online service. The serversystem repeats these operations for a plurality of online services. Forexample, the server system sends to one or more servers of a socialnetworking service X a request for information about “georgewashington,”“gwashington,” “gawashington,” etc., and receives the response. Then theserver system makes a similar or same request to one or more servers ofa social networking service Y. The server system repeats theseoperations for remaining online services in the plurality of onlineservices.

Typically, information received by the server system is information thata respective owner of the corresponding identifier (e.g., an owner ofthe account “georgewashington” at the social networking service X) hasdecided to share with the public. For example, the respective owner may“opt-in” to share the respective owner's full name, geography/location(e.g., city and state), and/or a list of connections. As such, in someembodiments, the information retrieved from one or more serversassociated with the respective online service include a full name,geography, and/or a list of connections.

In some embodiments, the information retrieved, from the one or moreservers associated with the respective online service, for eachrespective candidate identifier, comprises (608) secondary useridentifiers (e.g., real names and/or usernames) of secondary usersassociated with the respective candidate identifier. In someembodiments, the secondary users are associated with the first user(e.g., friends or connections of the first user on the respective onlineservice). For example, the information retrieved for “gwashington” onTwitter may include secondary user identifiers, “Thomas Jefferson” and“John Adams” who are friends or connections of George Washington (FIGS.5A-5B).

The server system compares (610) the information retrieved for eachrespective candidate identifier of the plurality of candidateidentifiers with information corresponding to the first user to producea match result for each respective candidate identifier. For example,the server system may compare the full name of each respective candidateidentifier and the full name of the first user (e.g., 442 and 430, FIG.4A). Additionally, or alternatively, the server system may also comparethe geography of each respective candidate identifier and the geographyof the first user (e.g., 444 and 434, FIG. 4A). In some embodiments, thematch result indicates that there is an exact match. However, the matchresult typically does need to be an exact match. For example, in someembodiments, the match result indicates that a substring of informationfor the first user is included in information for the respectivecandidate identifier (e.g., a portion of a name), or vice versa.

In some embodiments, the server system compares friends/connections(e.g., 424, FIG. 4A) of the respective candidate identifier withcontacts of the first user. In some embodiments, the server system makesthe comparison (of two respective contacts, one being a contact of therespective candidate identifier and the other a contact of the firstuser) based on one of more of: name 404 (FIG. 4A), email address 406,other identifier(s) 408, and URL(s) 410 (e.g., a unique identifier in aweb log URL) of the respective contact. In other words, the serversystem identifies variations of name 404, email address 406, otheridentifier(s) 408, and URL(s) 410 of a particular contact and comparesthe variations with the identifiers for friends/connections of therespective candidate identifier. This comparison operation isparticularly beneficial when the first user has a common name andresides in a high population area. In such cases the name and geographyinformation may not be sufficient to distinguish one person from anotherperson with the same or similar name in the same geographic area. Then,information about who each person knows can be used to distinguish twopeople with otherwise similar profiles (e.g., the same name and the samegeographic area).

In some embodiments, the match result for each respective candidateidentifier corresponds (612) to a number of secondary users associatedwith the respective candidate identifier that match contacts in a set ofcontacts of the first user. For example, the match result indicates howmany of the secondary users (e.g., Thomas Jefferson and Adam Smith) arecontacts of the first user. In some embodiments, the match resultcorresponds to a number of secondary users that match a subset ofcontacts of the first user (e.g., close contacts or important contacts,selected by the first user or determined based on the frequency ofcommunication).

In some embodiments, the match result for each respective candidateidentifier corresponds (614) to a number of secondary user identifiersin the retrieved information that match contacts in a set of contacts ofthe first user. For example, the match result indicates how manysecondary user identifiers in the retrieved information (e.g.,“tjefferson” and “asmith”) match contacts of the first user. In someembodiments, the match result corresponds to a number of secondary useridentifiers that match a subset of contacts of the first user.

The server system conditionally, in accordance with the match resultsfor the plurality of candidate identifiers, identifies (616) a bestmatching candidate identifier for the first user (e.g., for eachrespective online service 604). In some embodiments, the best matchingcandidate identifier is an exact match of the first user (e.g., the fullname and geography of the best matching candidate identifier is the fullname and geography of the first user). In some embodiments, the bestmatching candidate identifier is identified based on a scoringalgorithm, and the best matching candidate identifier is a candidateidentifier with the best score. In some embodiments, the server systemidentifies the best matching candidate identifier for the first userbased on a predefined score threshold (e.g., a candidate identifier withthe best score that exceeds the predefined score threshold). As aresult, the server system may not identify any best matching candidateidentifier in some cases (e.g., the scores of candidate identifiers donot exceed the predefined score threshold). It is noted that a result ofno best matching candidate identifier is particularly appropriate, withrespect to a particular online service, in cases in which the first userdoes not have account with the online service. For example, while method600 may look for best matching candidates with respect to N (e.g.,several dozen) online services, the first user may in fact have accountsat only a subset of those online services. Thus, it is desirable for themethod 600 to avoid false positive results.

In some embodiments, the best matching candidate identifier isidentified based on the number of secondary users, or secondary useridentifiers, that match contacts of the first user. In some embodiments,the best matching candidate identifier is identified based on the numberof matching secondary users or secondary user identifiers and the numberof contacts in the set of contacts of the first user. For example,between a first candidate identifier that has 5 matching secondary useridentifiers out of 10 secondary user identifiers (i.e., 50% match) and asecond candidate identifier that has 5 matching secondary useridentifiers out of 50 secondary user identifiers (i.e., 10% match), thefirst candidate identifier (that has a higher percentage of match) isidentified as the best matching candidate identifier.

Ideally, when method 600 is well implemented, the user represented bythe best matching candidate identifier is (618) the first user. In otherwords, the first user is the owner of the best matching candidateidentifier.

The server system provides (620) the best matching candidate identifiersfor the first user, corresponding to at least a subset of the pluralityof online services, for use in a subsequent process. For example, theserver system provides the best matching candidate identifiers to searchengine 110 (FIG. 1), social networking service server 104, and/or client102 for a subsequent process.

In some embodiments, the server system provides (622) an annotation thatincludes a respective candidate identifier of the best matchingcandidate identifiers and a confirmation affordance for confirmationthat the first user owns the respective candidate identifier. Forexample, annotation 504 in FIG. 5A includes a best matching candidateidentifier (e.g., “gwashington” on Twitter) and a confirmationaffordance (e.g., “are you gwashington on Twitter?”).

In some embodiments, the server system stores (624) at least a subset ofinformation corresponding to the best matching candidate identifier asinformation corresponding to the first user. For example, in accordancewith a user confirmation that the first user owns the best matchingcandidate identifier, the server system may add the secondary users ofthe best matching candidate identifier to the contacts of the firstuser. Alternatively, the server system may add a link to postings by thebest matching candidate identifier on the respective online service on aweb page owned by the first user (e.g., the first user's home page orprimary social network page). In some embodiments, the server systeminitiates storing at least a subset of information corresponding to thebest matching candidate identifier in one or more servers for an onlineservice distinct from the respective online service (e.g., the serversystem initiates copying information to the first user's primary socialnetworking service).

In some embodiments, the server system includes a search engine (e.g.,search engine 110, FIG. 2) or the server system is coupled with a searchengine (e.g., FIG. 1). In some embodiments, the server system thatincludes the search engine or the search engine coupled with the serversystem performs (626) said subsequent process. The subsequent processincludes (626-A) identifying secondary users associated with the bestmatching candidate identifiers (e.g., the server system finds secondaryidentifiers 424 (FIG. 4A) of friends, or users having a socialconnection with the respective user(s) who correspond to the bestmatching candidate identifiers).

The subsequent process includes (626-B) receiving a search query. Thesearch query from a client system is associated with the first user(e.g., 102, FIG. 1). For example, the search query “bbq” in FIG. 5B isassociated with user identifier 506 (e.g., the email address,george.washington@usa.gov) of the first user.

The subsequent process includes (626-C) obtaining a set of searchresults corresponding to the search query. The set of search resultsincludes a plurality of items that are arranged in a sequence (e.g.,search results 502, FIG. 5A), and the plurality of items includes one ormore items authored or annotated by at least one of the secondary users(e.g., posts authored by friends or items annotated by friends, such assearch result 502-2 shared by a secondary user, Thomas Jefferson, FIG.5A).

In some embodiments, the subsequent process includes (626-D) adjustingrespective positions of the one or more items authored or annotated byat least one of the secondary users in the sequence (e.g., boost theposts authored by the friends or items annotated by the friends, such assearch result 502-4, FIG. 5B).

The subsequent process includes (626-E) providing the set of searchresults for display at the client system associated with the first user.In some embodiments, search engine 110 in the server system (FIG. 2) orthe search engine coupled with the server system (FIG. 1) sends the setof search results to the client (e.g., 102).

In some embodiments, the server system provides (628) an annotationauthored by a respective secondary user (e.g., a snippet of aposting/annotation authored by the respective secondary user or anindication that the respective secondary user has annotated a particularitem, such as “Thomas Jefferson has shared this”). The annotationincludes a confirmation affordance for confirmation that the first userknows the respective secondary user (e.g., “do you know Thomas Jeffersonon Twitter?”). In some embodiments, in accordance with a userconfirmation that the first user knows the respective secondary user,the contacts (e.g., 428, FIG. 4A) of the first user are updated (e.g.,the respective secondary user is added to the contacts of the firstuser, or a contact of the first user that corresponds to the respectivesecondary user is updated to include the identifier of the respectivesecondary user for the respective online service).

In some embodiments, the secondary users exclude (630) users representedby the best matching candidate identifiers. For example, the secondaryusers are friends/connections of respective users represented by thebest matching candidate identifiers, but not the respective usersthemselves.

FIG. 7 is a flowchart representing method 700 of identifying a socialnetwork set of search results, in accordance with some embodiments. Themethod is performed at a server system having one or more processors andmemory storing one or more programs for execution by the one or moreprocessors. In some embodiments, method 700 is performed by searchengine system 110, one embodiment of which is shown in FIG. 8, or in aserver system that includes a search engine, as shown in FIG. 2.

The server system receives (702) a search query from a client system(e.g., client 102, FIG. 1) associated with a first user. Operations 704,706 and 714, and optionally one of more of operations 708, 710, 712, areperformed by the server system in response to receiving the searchquery. Prior to the performance of method 700, user information for thefirst user, as described above with respect to FIGS. 4A and 4B, has beengathered and stored in a user information database or the like. Inaddition, prior to performance of method 700, a set of candidateidentifiers has been identified or determined for the first user andstored in a database or the like.

The server system obtains (704) one or more candidate identifiersassociated with the first user (e.g., the set of candidate identifiersfor the first user or the best matching candidate identifier from method600).

The server system identifies (706) a social network set of searchresults matching the search query and social network criteria for thefirst user. The social network criteria is satisfied for a respectivesearch result when the respective search result is authored or annotated(e.g., shared or otherwise annotated) by one or more people (or moregenerally, entities) having author identifiers, and at least one authoridentifier of the one or more author identifiers is associated with(e.g., in a social circle or network with) at least one candidateidentifier of the one or more candidate identifiers associated with thefirst user. For example, in FIG. 5C, search result 502-5 satisfies thesocial network criteria, because search result 502-5 is annotated (e.g.,shared) by a user, Thomas Jefferson, who is associated with anidentifier, gwashington, and the identifier is a candidate identifierfor the user, George Washington.

In some embodiments, the social network set of search results includes(708) a first set of search results authored or annotated by one or moreauthor identifiers associated with at least one candidate identifier ofthe one or more candidate identifiers associated with the first user,and further includes a second set of search results authored orannotated by one or more author identifiers associated with at least oneknown identifier of the first user. For example, the social network setof search results include search results authored by both authorsassociated with an owner of a candidate identifier (who may or may notbe the first user) and authors associated with the first user.

In some implementations, in response to receiving the search query, theserver system identifies (710) a list of search results (which includesthe social network set of search results) that match the received searchquery by identifying a third set of search results matching the searchquery without regard to the social network criteria, identifying searchresults (i.e., the social network set of search results) within thethird set of search results that match the social network criteria forthe first user, and applying ranking criteria to search results in thethird set of search result such that the ranks of search results thatmatch the social network criteria for the first user are boosted.

In some other implementations, in response to receiving the searchquery, the server system identifies a list of search results (whichincludes the social network set of search results) that match thereceived search query by identifying a third set of search resultsmatching the search query without regard to the social network criteria,and identifying search results (i.e., the social network set of searchresults) within the third set of search results that match the socialnetwork criteria for the first user without adjusting the rankingcriteria based on whether the search results match the social networkcriteria.

In some implementations, applying ranking criteria includes computing ascore for each search result in the first set of search results. In someimplementations, the score includes a social networking factor that hasa default value for results that do not match the social networkcriteria for the first user and that has a value other than the defaultvalue for results that do match the social network criteria for thefirst user. In some embodiments, the social networking factor's valuetakes into account the degree of affinity between the annotator (or theowner of the corresponding author identifier) and the first user (e.g.,affinity 412, FIG. 4A).

In some implementations, in response to receiving the search query, theserver system identifies (712) a list of search results (which includesthe social network set of search results) that match the received searchquery by identifying a third set of search results matching the searchquery without regard to the social network criteria, identifying thesocial network set of search results (see 706 and optionally 708), andmerging at least a portion of the third set of search results and thesocial network set of search results to generate the list of searchresults.

The server system provides (714) to the client system the aforementionedlist of search results, which includes at least a subset of the socialnetwork set of search results.

FIG. 8 is a block diagram illustrating search engine system 110 inaccordance with some embodiments. Search engine system 110 is typicallyimplemented using a server system having one or one or more servers.More particularly, search engine system 110 typically includes one ormore processing units (CPUs) 802, one or more network or othercommunications interfaces 804, memory 806, and one or more communicationbuses 808 for interconnecting these components. In some embodiments,communication buses 808 include circuitry (sometimes called a chipset)that interconnects and controls communications between systemcomponents. In some other embodiments, search engine system 110 includesa user interface (not shown) (e.g., a user interface having a displaydevice, a keyboard, and a mouse or other pointing device), but moretypically search engine system 110 is controlled from and accessed byvarious client systems.

Memory 806 of search engine system 110 includes high-speed random accessmemory, such as DRAM, SRAM, DDR RAM or other random access solid statememory devices; and may include non-volatile memory, such as one or moremagnetic disk storage devices, optical disk storage devices, flashmemory devices, or other non-volatile solid state storage devices.Memory 806 may optionally include one or more storage devices remotelylocated from CPU(s) 202. Memory 806, or alternately the non-volatilememory device(s) within memory 806, comprises a non-transitory computerreadable storage medium for storing information. In some embodiments,memory 806 or the computer readable storage medium of memory 806 storesthe following programs, modules and data structures, or a subsetthereof:

-   -   Operating System 810 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   Network Communication Module (or instructions) 812 that is used        for connecting search engine system 110 to other computers        (e.g., identifier system 108, social networking service servers        104, and clients 102) via one or more communications interfaces        804 and one or more communications networks 106 (FIG. 1), such        as the Internet, other wide area networks, local area networks,        metropolitan area networks, and so on;    -   search database 228, including search index 230 (for mapping        query terms to documents, and optionally locations within        documents), and documents or content database 232 (storing the        content indexed by search index 230);    -   search query handler 234 (sometimes implemented by a front end        server of a search engine system), for processing search queries        received from users at client systems and responding to such        search queries (see method 700, and operations 626-630 of        process 600); and    -   optionally, user information cache 236 (search engine user        information cache) that stores portions of user information        116-C, optionally contact data 226-C, and candidate identifiers        118-C, for identifying social network sets of search results        while processing respective search queries.

Notwithstanding the discrete blocks in FIG. 8, this figure is intendedto be a functional description of some embodiments rather than astructural description of functional elements in the embodiments. One ofordinary skill in the art will recognize that an actual implementationof a search engine system might have the functional elements grouped orsplit among various components. In practice, and as recognized by thoseof ordinary skill in the art, items shown separately could be combinedand some items could be separated.

The number of servers used to implement search engine system 110 and howfeatures are allocated among them will vary from one implementation toanother, and may depend in part on the amount of data traffic that thesystem must handle during peak usage periods as well as during averageusage periods, and may also depend on the amount of data stored bysearch engine system 110. Moreover, one or more of the blocks (e.g.,search query handler 234, search database 228, etc.) in FIG. 8 may beimplemented on one or more servers designed to provide the describedfunctionality. Although the description herein refers to certainfeatures implemented in identifier system 108 and certain featuresimplemented in search engine system 110, the embodiments are not limitedto such distinctions. For example, features described herein as beingpart of search engine system 110 can be implemented in whole or in partin identifier system 108 or social network service server 104, and viceversa.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the claims to the precise forms disclosed. Many modifications andvariations are possible in view of the above teachings. The embodimentswere chosen and described in order to best explain the principles of theinvention and its practical applications, to thereby enable othersskilled in the art to best utilize the invention and various embodimentswith various modifications as are suited to the particular usecontemplated.

What is claimed is:
 1. A method, performed at a server system having oneor more processors and memory storing one or more programs for executionby the one or more processors, comprising: receiving a search query froma first user; identifying a social network set of search results that(i) matches the search query and (ii) satisfies a social networkcriteria for the first user, wherein: the social network criteria issatisfied for a respective search result when the respective searchresult is annotated by a second user, distinct from the first user,represented by one or more author identifiers, and at least one authoridentifier of the one or more author identifiers represents the seconduser and is associated, in a social network application, with a firstcandidate identifier associated with the first user; identifying aparticular social network application on which the first user and thesecond user are potentially connected; and formatting for concurrentpresentation to the first user: (i) a search result, in the socialnetwork set of search results, published on the particular socialnetwork application by the second user, and (ii) information identifyingthe particular social network application.
 2. The method of claim 1,wherein the social network set of search results includes: a first setof search results authored or annotated by one or more authoridentifiers associated with at least one candidate identifier of aplurality of candidate identifiers associated with the first user, and asecond set of search results authored or annotated by one or more authoridentifiers associated with at least one known identifier of the firstuser.
 3. The method of claim 1, wherein the social network set of searchresults comprises: a first set of search results matching the searchquery without regard to the social network criteria.
 4. The method ofclaim 1, wherein identifying the social network set of search resultsthat (i) matches the search query and (ii) satisfies the social networkcriteria for the first user comprises: identifying a first set of searchresults matching the search query without regard to the social networkcriteria; identifying search results within the first set of searchresults that match the social network criteria for the first user; andapplying ranking criteria to the search results in the first set ofsearch result such that a rank of each search result that matches thesocial network criteria for the first user is boosted.
 5. A serversystem, comprising one or more processors and memory storing one or moreprograms for execution by the one or more processors, the one or moreprograms including instructions, which when executed by the one or moreprocessors, cause the server system to: receive a search query from afirst user; identify a social network set of search results that (i)matches the search query and (ii) satisfies a social network criteriafor the first user, wherein: the social network criteria is satisfiedfor a respective search result when the respective search result isannotated by a second user, distinct from the first user, represented byone or more author identifiers, and at least one author identifier ofthe one or more author identifiers represents the second user and isassociated, in a social network application, with a first candidateidentifier associated with the first user; identify a particular socialnetwork application on which the first user and the second user arepotentially connected; and format for concurrent presentation to thefirst user: (i) a search result, in the social network set of searchresults, published on the particular social network application by thesecond user, and (ii) information identifying the particular socialnetwork application.
 6. The server system of claim 5, wherein the socialnetwork set of search results includes: a first set of search resultsauthored or annotated by one or more author identifiers associated withat least one candidate identifier of a plurality of candidateidentifiers associated with the first user, and a second set of searchresults authored or annotated by one or more author identifiersassociated with at least one known identifier of the first user.
 7. Theserver system of claim 5, wherein the social network set of searchresults further comprises: a first set of search results matching thesearch query without regard to the social network criteria.
 8. Theserver system of claim 5, wherein the instructions to identify thesocial network set of search results that (i) matches the search queryand (ii) satisfies a social network criteria for the first user compriseinstructions to: identify a first set of search results matching thesearch query without regard to the social network criteria; identifysearch results within the first set of search results that match thesocial network criteria for the first user; and apply ranking criteriato the search results in the first set of search result such that a rankof each search result that matches the social network criteria for thefirst user is boosted.
 9. A non-transitory computer readable storagemedium, storing one or more programs for execution by one or moreprocessors of a server system, the one or more programs includinginstructions, which when executed by the one or more processors, causethe server system to: receive a search query from a first user; identifya social network set of search results that (i) matches the search queryand (ii) satisfies a social network criteria for the first user,wherein: the social network criteria is satisfied for a respectivesearch result when the respective search result is annotated by a seconduser, distinct from the first user, represented by one or more authoridentifiers, and at least one author identifier of the one or moreauthor identifiers represents the second user and is associated, in asocial network application, with a first candidate identifier associatedwith the first user; identify a particular social network application onwhich the first user and the second user are potentially connected; andformat for concurrent presentation to the first user: (i) a searchresult, in the social network set of search results, published on theparticular social network application by the second user, and (ii)information identifying the particular social network application. 10.The non-transitory computer readable storage medium of claim 9, whereinthe social network set of search results includes: a first set of searchresults authored or annotated by one or more author identifiersassociated with at least one candidate identifier of a plurality ofcandidate identifiers associated with the first user, and a second setof search results authored or annotated by one or more authoridentifiers associated with at least one known identifier of the firstuser.
 11. The non-transitory computer readable storage medium of claim9, wherein the social network set of search results further comprises: afirst set of search results matching the search query without regard tothe social network criteria.
 12. The non-transitory computer readablestorage medium of claim 9, wherein the instructions, which when executedby the one or more processors, cause the server system to identify asocial network set of search results that (i) matches the search queryand (ii) satisfies a social network criteria for the first user compriseinstructions, which when executed by the one or more processors, causethe computer system to: identify a first set of search results matchingthe search query without regard to the social network criteria; identifysearch results within the first set of search results that match thesocial network criteria for the first user; and apply ranking criteriato the search results in the first set of search result such that a rankof each search result that matches the social network criteria for thefirst user is boosted.
 13. The method of claim 1, wherein the at leastone author identifier of the one or more author identifiers thatrepresents the second user is deemed to be associated, in a socialnetwork application, with the confirmed candidate identifier inaccordance with a determination that the first user and the second userare connected in the social network application.
 14. The server systemof claim 5, wherein the at least one author identifier of the one ormore author identifiers that represent the second user is deemed to beassociated, in a social network application, with the confirmedcandidate identifier in accordance with a determination that the firstuser and the second user are connected in the social networkapplication.
 15. The non-transitory computer readable storage medium ofclaim 9, wherein the at least one author identifier of the one or moreauthor identifiers that represent the second user is deemed to beassociated, in a social network application, with the confirmedcandidate identifier in accordance with a determination that the firstuser and the second user are connected in the social networkapplication.
 16. The method of claim 1, wherein the at least one authoridentifier of the one or more author identifiers is determined to beassociated, in a social network application, with the confirmedcandidate identifier based on a frequency of communication between theone author identifier and the confirmed candidate identifier.